Conversation
|
Thanks @itemkelvin for the prototyping~!
I appreciate the effort~! |
The dataflow execution process (from the provided code context) is as follows:
|
|
Thanks @itemkelvin for summarization, I put your summary into the PR's description.
This sounds a topological sorting first, then put the sorted stuff into a map. So can we reuse dataflow/lib/NeuraDialect/Mapping/mapping_util.cpp Lines 149 to 209 in 3158147 getTopologicallySortedOps() into that file, and use it in your code.
These two are a little bit confusing. I would suggest rename
Can you explain when the worklist would be empty? From you description, "Add dependent operations (from value_users) to the worklist", I didn't see when we skip adding dependent users into the worklist, so sounds like never end. |
In the For example, when executing ctrl_mov, if the input predicate is true and the target value is updated, the interpreter logs: Otherwise, if there's no meaningful change, dependent operations are not added to the worklist. This selective propagation mechanism ensures that only meaningful changes trigger re-execution, which prevents unnecessary work and guarantees that the worklist eventually empties, allowing interpretation to terminate. |
|
This queue only handles data-flow execution.
|
Thanks, plz reply on the pending comment in this PR, so then I can "resolve" them, and merge this PR. |
All pending comments have been replied. |
add interpreter dataflow mode
add interpreter dataflow mode
The dataflow execution process (from the provided code context) is as follows:
There are still two test cases that fail, and they weren't written by me.